Описание
Объект Error содержит подробные сведения об ошибках
доступа к данным, каждая из которых относится к определенной операции с объектом
доступа к данным (DAO).
Замечания
Любая операция с участием объектов доступа к данным может
привести к возникновению одной или нескольких ошибок. Например, вызов сервера
ODBC может привести к ошибке сервера базы данных, к ошибке ODBC
или к ошибке DAO. При возникновении каждой такой ошибки объект
Error помещается в семейство Errors объекта DBEngine. Таким
образом, результатом одного события может оказаться появление нескольких
объектов Error в семействе Errors.
При возникновении ошибки в
другой операции с объектами доступа к данным семейство Errors очищается и
в него помещается новый объект Error. Операции DAO, в которых
ошибки не возникают, не оказывают влияния на семейство Errors.
Набор
объектов Error в семействе Errors описывает одну ошибку. Первый
объект Error представляет ошибку низшего уровня (исходную ошибку), второй
объект ошибку следующего уровня и т.д. Например, если ошибка ODBC
возникает при попытке открыть объект Recordset, то первый объект Error
— Errors(0) — содержит ошибку ODBC низшего уровня; следующие
объекты-ошибки содержат ошибки ODBC, возвращаемые со следующих уровней
программного обеспечения ODBC. В подобном случае диспетчер драйвера
ODBC и, возможно, сам драйвер возвращают отдельные объекты Error.
Последний объект Error — Errors.Count-1 — содержит ошибку DAO,
указывающую невозможность открытия объекта.
Просмотр сведений о конкретных
ошибках в семействе Errors позволяет более точно определить в программах
обработки ошибок причину и источник каждой ошибки и принять соответствующие меры
для исправления ситуации. Как в рабочей области Microsoft Jet, так и в
рабочей области ODBCDirect пользователь имеет возможность читать значения
свойств Error, чтобы получить подробные сведения о каждой ошибке, включая
следующие:
1. Свойство Description содержит текст сообщения об ошибке,
которое будет выведено на экран, если ошибка не перехватывается.
2. Свойство
Number содержит значение типа Long, представляющее код
ошибки.
3. Свойство Source указывает объект, в котором возникла
ошибка. Это особенно полезно, если в семействе Errors появляется
несколько объектов Error в результате обращения к источнику данных
ODBC.
4. Свойства HelpFile и HelpContext указывают файл
справочной системы Microsoft Windows и раздел справки (если они
существуют), соответствующие ошибке.
Если при программировании на языке
Microsoft Visual Basic для приложений (VBA) ключевое слово
New было использовано при создании объекта, ставшего источником ошибки до
своего добавления в семейство, то семейство Errors объекта
DBEngine не будет содержать ошибку, соответствующую этому объекту,
поскольку еще не установлена связь этого объекта с объектом DBEngine.
Однако сведения об этой ошибке будут доступны в объекте Err VBA.
В
программах обработки ошибок на языке VBA следует проверять семейство
Errors во всех случаях, когда возможно возникновение ошибки доступа к
данным. При создании централизованной программы обработки ошибок следует
проверять значение объекта Err VBA, чтобы определить, является ли
применимой к конкретной ошибке информация, содержащаяся в семействе Errors. Если
значение свойства Number последнего элемента семейства Errors (с номером
DBEngine.Errors.Count - 1) и значение объекта Err совпадают, можно
использовать набор инструкций Select Case для идентификации конкретной
ошибки или ошибок объектов доступа к данным. Если эти значения не совпадают,
следует вызвать метод Refresh для семейства Errors.
Пример
Следующая программа создает ошибку, перехватывает ее и отображает
свойства Description, Number, Source, HelpContext и
HelpFile результирующего объекта Error.
Sub DescriptionX()
Dim dbsTest As Database
On Error GoTo ОбработчикОшибок
' Преднамеренно генерирует ошибку.
Set dbsTest = OpenDatabase("NoDatabase")
Exit Sub
ОбработчикОшибок:
Dim strError As String
Dim errLoop As Error
' Отображает семейство Errors и отображает свойства
' каждого объекта Error.
For Each errLoop In Errors
With errLoop
strError = "Ошибка #" & .Number & vbCr
strError = strError & " " & .Description & vbCr
strError = strError & " (Источник: " & .Source & ")" & vbCr
strError = strError & "Нажмите F1 для вызова раздела " & .HelpContext & vbCr
strError = strError & " из файла " & .HelpFile & "."
End With
MsgBox strError
Next
Resume Next
End Sub